Спринт 3/18 → Тема 1/3: Самое необходимое об ООП → Урок 7/8
Игровой модуль на ООП: часть 2-я
Основа модуля character_creation_module переписана под парадигму ООП. Вы объявили класс-родитель
Character и классы-наследники Warrior, Mage и Healer; описали методы атаки, защиты и специального умения — attack(), defence() и special(). С помощью вашей программы уже можно вызвать объект нужного персонажа и его методы.В этом уроке вы переработаете две оставшиеся функции под новый код. Это функция выбора персонажа
choice_char_class() и функция запуска тренировки start_training().Функция выбора персонажа
Функция выбора персонажа в исходном коде модуля character_creation_module выглядит так:
PYTHON
Преобразовывать эту функцию в класс нет необходимости. Если вы пишете код, используя парадигму ООП, это не значит, что в программе нельзя использовать функции отдельно от классов.
Первым делом вам нужно избавиться от повторяющегося условного оператора. Для этого сопоставьте вариант ввода от пользователя с названием класса-наследника. Используйте словарь, где ключом будет то, что введёт пользователь, а значением — название класса. Вот этот словарь:
PYTHON
Далее, чтобы избавиться от условных операторов, используйте цикл: получайте из словаря названия классов-наследников по введённому значению. Чтобы создать объект класса, в качестве аргумента ему нужно будет передать строковое значение имени персонажа, поэтому добавьте для функции
choice_char_class новый параметр — имя персонажа, char_name.Добавьте в файл main.py обновлённую функцию
choice_char_class:PYTHON
💡 Что изменилось:
- Теперь функция возвращает не строку, а объект класса с переданным ему именем персонажа, поэтому аннотация объявления функции другая.
- Ввод пользователя записывается в отдельную строковую переменную
selected_class. - Объект выбранного пользователем класса записывается в переменную
char_class.
Благодаря тому, что вы заменили условные операторы на словарь, стало проще добавлять новых персонажей. Достаточно вписать их название в словарь и объявить для них класс.
Функция запуска тренировки
Переходим к функции запуска тренировки —
start_training(). В качестве параметра она должна принимать объект класса Character, который возвращает функция choice_char_class(). Команды для тренировки можно вынести в словарь commands, где ключами будут строковые команды от пользователя, а значениями — методы объекта, который принимает функция. Блок, который отвечает за вывод описания персонажа, совсем уберите из кода проекта.Доработайте код самостоятельно.
КодPYTHON
Подведём итоги
Вы полностью переработали модуль character_creation_module под парадигму ООП. Пора проверить его работоспособность: скопируйте код из файла main.py и нажмите кнопку «Запустить». Импорт модуля
run_screensaver и блок if __name__ main копировать не нужно!КодPYTHON
Да! Вы справились! Теперь в культовой консольной RPG «Питонические Воины: Тёмная Сторона Кода» код создания персонажа стал масштабируемым, структурированным и соответствует всем требованиям технического задания.
Мы вами гордимся! И Тимур тоже вами гордится и подтверждает, что ваша стажировка пройдена успешно!